package com.zl.customer.web.interceptors;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * A拦截器
 * @ClassName: AInterceptor
 * @author: suke
 * @since: 2021/8/6 13:51
 */
public class AInterceptor implements HandlerInterceptor {
    /**
     *  在处理器之前执行
     *     返回值 true:  放行     false: 拦截
     *
     *     应用场景:  权限控制, 登录访问控制
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("AInteceptor preHandle().....");

        return true;
    }

    /**
     * 在处理器执行之后, 返回视图之前执行
     * 使用场景: 这里可在返回视图前对模型数据进行加工处理，比如这里加入公用信息以便页面显示
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("AInteceptor  postHandle().....");

    }

    /**
     * 处理器返回视图之后执行
     * 使用场景:
     *   这里可得到执行controller时的异常信息
     *   这里可记录操作日志，资源清理等
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //记录处理器执行时产生错误日志
        System.out.println("AInteceptor afterCompletion()..... ");
    }
}
